import { Toast } from 'vant'
// 这玩意是地第三方的 所以要vant
//
//
// 分装并且存放axios模块的点发
// 其实就是axios的实例
// 1.引入axiosfr
import axios from 'axios'
//
// 2.创建一个新的axios实例
const request = axios.create({
  // ↓ 地址
  baseURL: 'http://interview-api-t.itheima.net/h5/',
  timeout: 5000// 入如果超过了5秒 直接请求失败
})
//
// 3.添加请求拦截器  每次都得结果这个拦截器  然后再去发送请求
request.interceptors.request.use(function (config) {
  // config就是包含请求对象的一些请求信息
  // 4.一定要用return出去这个请求对象
  return config
  // use方法还可以接收第二个函数
}, function (error) {
  // 5.如果出错了  那么要做些什么
  // 返回一个失败的Promise实例 上面那个是成功的
  // js如果想用Toast方法 就得引入
  if (error.response) {
    // 这里返回提示消息是错误信息里面的response里面的data数据里面的message里面的值
    Toast(error.response.data.message)
  }
  return Promise.reject(error)
})
//

//  总结：use方法接收2个函数
// 第一个是请求之前需要做什么=》       只要return出去请求对象就好了
// 第二个就是出错了需要返回什么=》     返回一个失败的Promise对象
//
//
//
// 6. 添加响应拦截器   传入一个形参  返回出去这个形参的data（数据）值
request.interceptors.response.use(function (asd) {
  return asd.data
}, function (error) {
  // 如果请求失败了  那么就把error包装成一个错误状态的promise实例并且返回就可以了
  return Promise.reject(error)
})

//
//
//
//
//
// 现在我们就添加了请求和响应拦截器  接下来就是把这是实例化对象给暴露出去  用默认暴露
export default request
// 当那个文件需要使用这个方法的时候  直接调用就好了
